package cn.elwy.rcp.ui.explorer.core.service.impl;

import java.io.File;
import java.io.InputStream;
import java.net.URL;

import org.springframework.stereotype.Service;

import cn.elwy.osgi.config.ConfigContext;
import cn.elwy.osgi.config.util.ResourceUtil;
import cn.elwy.rcp.ui.explorer.core.AppContext;
import cn.elwy.rcp.ui.explorer.core.PathConst;
import cn.elwy.rcp.ui.explorer.core.dao.ProjectConfigDao;
import cn.elwy.rcp.ui.explorer.core.service.ProjectConfigService;
import cn.elwy.rcp.ui.explorer.core.vo.ProjectConfig;

@Service(ConfigContext.SERVICE_PREFIX + ProjectConfigService.ID)
public class CopyOfProjectConfigServiceImpl implements ProjectConfigService {

  private ProjectConfigDao projectConfigDao;

  public ProjectConfigDao getProjectConfigDao() {
    if (projectConfigDao == null) {
      projectConfigDao = AppContext.getDao("projectConfigDao", ProjectConfigDao.class);
    }
    return projectConfigDao;
  }

  public void setProjectConfigDao(ProjectConfigDao projectConfigDao) {
    this.projectConfigDao = projectConfigDao;
  }

  /**
   * 加载工程配置文件
   * 
   * @param projectPath 配置文件路径
   * @return
   */
  public ProjectConfig load() {
    URL url = ResourceUtil.getResource(this.getClass(), PathConst.PROJECT_TEMPLATE_FILE);
    return load(url);
  }

  /**
   * 加载工程配置文件
   * 
   * @param projectPath 配置文件路径
   * @return
   */
  public ProjectConfig load(File file) {
    return getProjectConfigDao().load(file);
  }

  /**
   * 加载工程配置文件
   * 
   * @param file 配置文件路径
   * @return
   */
  public ProjectConfig load(URL url) {
    return getProjectConfigDao().load(url);
  }

  /**
   * 加载工程配置文件
   * 
   * @param file 配置文件路径
   * @return
   */
  public ProjectConfig load(InputStream in, String encoding) {
    return getProjectConfigDao().load(in, encoding);
  }

  public void saveLastProject(ProjectConfig projectConfig) {
  }

  @Override
  public ProjectConfig getNewPorject() {
    return getProjectConfigDao().getEmptyPorject();
  }

  public void save(File file, ProjectConfig projectConfig) {
    getProjectConfigDao().save(projectConfig, file);
  }

}
